from conversion import CartoonStyle
from conversion import GreyStyle
from conversion import SketchStyle
from tkinter import *
import sys, os
import tkinter.messagebox
from tkinter import filedialog, messagebox

if __name__ == '__main__':
    root = Tk()
    root.wm_title("图像转换")

    # 添加应用图标
    program_directory = sys.path[0]
    root.iconphoto(True, PhotoImage(file=os.path.join(program_directory, "conversion.png")))

    # 设置窗口居中
    sw = root.winfo_screenwidth()  # 得到屏幕宽度
    sh = root.winfo_screenheight()  # 得到屏幕高度
    # 将root窗口的宽和高都设置成当前屏幕一半,第1个加号是距离屏幕左边的宽，第2个加号是距离屏幕顶部的高
    root.geometry("%dx%d+%d+%d" % (sw / 2, sh / 2, sw / 4, sh / 4))

    # 画布大小设置，白色背景为当前屏幕分辨率的一半
    canvas = Canvas(root, bg='white', height=sh / 2, width=sw / 2)
    canvas.pack()
    # 加载图片
    image_file = PhotoImage(file='conversion.png')

    # 定义图片的位置
    canvas.create_image(sw / 8, sh / 20, anchor='nw', image=image_file)

    def Cartoon():
        root.withdraw()
        imgInput_FileName = filedialog.askopenfilename()  # 获得选择好的文件路径
        tkinter.messagebox.showinfo('图像转换成功', CartoonStyle.toCarttonStyle(imgInput_FileName))
        root.destroy()

    def Sketch():
        root.withdraw()
        imgInput_FileName = filedialog.askopenfilename()  # 获得选择好的文件路径
        tkinter.messagebox.showinfo('图像转换成功', SketchStyle.toSketchStyle(imgInput_FileName))
        root.destroy()

    def Grey():
        root.withdraw()
        imgInput_FileName = filedialog.askopenfilename()  # 获得选择好的文件路径
        tkinter.messagebox.showinfo('图像转换成功', GreyStyle.toGreyStyle(imgInput_FileName))
        root.destroy()

    def exit_editor():
        if messagebox.askokcancel('退出?', '确定退出吗?'):
            root.destroy()
    # 函数封装完毕后，需要把函数名称添加到command参数之后

    def showinfo():
        tkinter.messagebox.showinfo('关于图像转换', '图像转换基于python3实现，此项目仅供学习参考！')

    menubar = Menu(root)
    fmenu = Menu(menubar)
    fmenu.add_separator()  # 分割线
    fmenu = tkinter.Menu(menubar, tearoff=False)  # 去横线
    fmenu.add_command(label='关于图像转换', command=showinfo)
    fmenu.add_command(label='退出 Ctrl+Q', accelerator='Ctrl+Q', command=exit_editor)


    emenu = Menu(menubar)
    emenu = tkinter.Menu(menubar, tearoff=False)  # 去横线

    gmenu = Menu(menubar)
    gmenu.add_separator()  # 分割线
    gmenu = tkinter.Menu(menubar, tearoff=False)  # 去横线
    gmenu.add_command(label="卡通风格", command=Cartoon)
    gmenu.add_command(label="素描风格", command=Sketch)
    gmenu.add_command(label="灰色风格", command=Grey)
    emenu.add_cascade(label='打开... Ctrl+O', menu=gmenu)
    menubar.add_cascade(label="图像转换", menu=fmenu)
    menubar.add_cascade(label="文件", menu=emenu)

    root['menu'] = menubar

    root.mainloop()